package practice;

import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;

/**
 * @AUTHOR LYF
 * @DATE 2022/2/12
 * @VERSION 1.0
 * @DESC
 */
class ComputeTask implements Callable {
    private int start,end;
    public ComputeTask(int start, int end) {
        this.start = start;
        this.end = end;
    }
    @Override
    public Integer call() throws Exception {
        int rs = 0;
        for(int i=start;i<=end;i++){rs+=i;}
        return rs;
    }
}
public class FutureTaskDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
         // 测试计算
         //        long start = System.currentTimeMillis();
//        List<FutureTask<Integer>> tasks = new LinkedList<>();
//        for(int i=0;i<10;i++){
//            FutureTask<Integer> task = new FutureTask<>(new ComputeTask(i*10000,(i+1)*10000));
//            task.run();
//            tasks.add(task);
//        }
//        int sum=0;
//        // 开始监督全部任务是否完成
//        while (true){
//            FutureTask<Integer> tmp = null;
//            if(tasks.isEmpty()){break;}
//            for(FutureTask<Integer> task:tasks){
//                if(task.isDone()){
//                    //System.out.println();
//                    tmp = task;
//                    sum+=task.get();
//                    break;
//                }
//            }
//            tasks.remove((Object)tmp);
//        }
//        long end = System.currentTimeMillis();
//        int sum=0;
//        for(int i=0;i<100000;i++){
//            sum+=i;
//        }
//        System.out.println(sum+"compute use:"+(end-start));
         // 异步问题-异常处理
         int[]arr ={0,1};
         List<Integer> errorList = new LinkedList<>();
         for(int i=0;i<10;i++){
             try {
                 int val = i/new Random().nextInt(2);
             }catch (Exception e){
                 errorList.add(i);
             }
         }
         System.out.println("Exception...:");
         errorList.forEach(u->{
             System.out.println(u);
         });

    }
}
